classDiagram
    class Originator {
        +state: string
        +createMemento(): Memento
        +restoreMemento(memento: Memento): void
        +setState(state: string): void
        +getState(): string
    }
    
    class Memento {
        -state: string
        +getState(): string
    }
    
    class Caretaker {
        +mementos: List~Memento~
        +addMemento(memento: Memento): void
        +getMemento(index: int): Memento
    }

    Originator --> Memento : creates
    Caretaker --> Memento : stores
